﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using Computer_Manager.BUS;
using Computer_Manager.DTO;
using DevExpress.XtraGrid.Views.Grid;
namespace Computer_Manager.GUI
{
    public partial class frmCategories : DevExpress.XtraEditors.XtraForm
    {
        DTO_categories dto_cate = new DTO_categories();
        BUS_categories bus_cate = new BUS_categories();
        DTO_product dto_pro = new DTO_product();
        BUS_product bus_pro = new BUS_product();
        public frmCategories()
        {
            InitializeComponent();
        }

        private void frmCategories_Load(object sender, EventArgs e)
        {
            GridviewCat();
        }

        private void grvCat_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            try
            {
                GridviewSubCat();
                if (grvSubCat.SelectedRowsCount < 1)
                {
                    btnEditSub.Enabled = false;
                    btnDelSub.Enabled = false;
                }
                else
                {
                    btnEditSub.Enabled = true;
                    btnDelSub.Enabled = true;
                }
            }
            catch (Exception){}
            
        }

        private void grvCat_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            GridView view = sender as GridView;
            string maloai = view.GetRowCellValue(e.RowHandle, view.Columns[0]).ToString();
            string tenloai = view.GetRowCellValue(e.RowHandle, view.Columns[1]).ToString();
            if (string.IsNullOrEmpty(maloai) || string.IsNullOrEmpty(tenloai))
            {
                XtraMessageBox.Show("Bạn chưa nhập đầy đủ thông tin!");
            }
            else
            {
                if (view.IsNewItemRow(e.RowHandle))
                {
                    dto_cate.codes_cat = maloai;
                    dto_cate.name_cat = tenloai;
                    dto_cate.parent_id = 0;
                    bus_cate.categories_insert(dto_cate);
                    XtraMessageBox.Show("Thêm thành công");
                }
                else
                {
                    dto_cate.id_cat = int.Parse(grvCat.GetFocusedDataRow()["id_cat"].ToString());
                    dto_cate.codes_cat = maloai;
                    dto_cate.name_cat = tenloai;
                    dto_cate.parent_id = 0;
                    bus_cate.categories_Update(dto_cate);
                    XtraMessageBox.Show("Sửa thành công");
                    GridviewCat();
                    GridviewSubCat();
                }
            }
        }

        public void GridviewCat() 
        {
            dto_cate.parent_id = 0;
            grcCat.DataSource = bus_cate.GetByParentId(dto_cate);
        }

        public void GridviewSubCat() 
        {
            dto_cate.parent_id = int.Parse(grvCat.GetFocusedDataRow()["id_cat"].ToString());
            if (int.Parse(grvCat.GetFocusedDataRow()["id_cat"].ToString()) > 0)
            {
                grcSubCat.DataSource = bus_cate.GetByParentId(dto_cate);
            }
            else
            {
                grcSubCat.DataSource = null;
            }
        }

        private void grvSubCat_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            GridView view = sender as GridView;
            string maloai = view.GetRowCellValue(e.RowHandle, view.Columns[0]).ToString();
            string tenloai = view.GetRowCellValue(e.RowHandle, view.Columns[1]).ToString();
            if (string.IsNullOrEmpty(maloai) || string.IsNullOrEmpty(tenloai))
            {
                XtraMessageBox.Show("Bạn chưa nhập đầy đủ thông tin!");
            }
            else
            {
                if (view.IsNewItemRow(e.RowHandle))
                {
                    dto_cate.codes_cat = maloai;
                    dto_cate.name_cat = tenloai;
                    dto_cate.parent_id = int.Parse(grvCat.GetFocusedDataRow()["id_cat"].ToString());
                    bus_cate.categories_insert(dto_cate);
                    XtraMessageBox.Show("Thêm thành công");
                }
                else
                {
                    dto_cate.id_cat = int.Parse(grvSubCat.GetFocusedDataRow()["id_cat"].ToString());
                    dto_cate.codes_cat = maloai;
                    dto_cate.name_cat = tenloai;
                    dto_cate.parent_id = int.Parse(grvCat.GetFocusedDataRow()["id_cat"].ToString());
                    bus_cate.categories_Update(dto_cate);
                    XtraMessageBox.Show("Sửa thành công");
                    GridviewSubCat();
                }
            }
        }

        private void btnAddSub_Click(object sender, EventArgs e)
        {
            v addsub = new v();
            addsub.ShowDialog();
        }

        private void btnEditSub_Click(object sender, EventArgs e)
        {
            frmEditSubCat frmEditsubcat = new frmEditSubCat();
            frmEditsubcat.Id_cat = int.Parse(grvSubCat.GetFocusedDataRow()["id_cat"].ToString());
            frmEditsubcat.ShowDialog();
        }

        private void btnDelSub_Click(object sender, EventArgs e)
        {
            dto_pro.id_cat = int.Parse(grvSubCat.GetFocusedDataRow()["id_cat"].ToString());
            if (bus_pro.GetByCat(dto_pro).Rows.Count > 0)
            {
                XtraMessageBox.Show("Loại danh mục này đã có sản phẩm! Không thể xoá","Lỗi",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
            else
            {
                if (XtraMessageBox.Show("Bạn có chắc muốn xoá không?","Thông báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    dto_cate.id_cat = int.Parse(grvSubCat.GetFocusedDataRow()["id_cat"].ToString());
                    bus_cate.categories_Delete(dto_cate);
                    XtraMessageBox.Show("Xoá thành công!!!");
                    GridviewCat();
                    GridviewSubCat();
                }
            }
        }
    }
}